package com.spc.car.data.domain.project.po;

import com.spc.car.common.utils.StringUtils;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

@Data
public class ProjectDocPO {

    private Long id;

    /**
     * 文档名称
     */
    private String docName;

    /**
     * 文档内容
     */
    private String content;

    /**
     * 文档分类 T 模板 D 文件
     */
    @NotBlank
    @Pattern(regexp = "[TD]", message = "文档分类编码错误")
    private String category;

    /**
     * 文档类型:  招标文件/预审文件/谈判文件/磋商文件等
     */
    private String docType;

    /**
     * 内容类型： N 公告  B 公示  空为普通
     */
    private String contentType;

    /**
     * 版本号 默认为时间戳
     */
    private String version;

    /**
     * 项目类型 房建/市政/公路/水利/其它
     */
    private String projectCategory;

    /**
     * 招标项目编号
     */
    private String projectTenderingCode;

    private String projectTenderingName;

    /**
     * 招标项目标段编号
     */
    private String projectTenderingSectionCode;

    private String projectTenderingSectionName;
    /**
     * 合同类型 单价合同等
     */
    private String contractType;

    /**
     * 适用区域 全国/省/市 具体到某区域名称
     */
    private String applicableArea;

    /**
     * 适用项目类型 政府采购/非政府采购
     */
    private String projectType;

    /**
     * 招标方式 公开招标/邀请招标等
     */
    private String tenderMethod;

    /**
     * 资格审查方式 预审/后审
     */
    private String qualificationExamination;

    /**
     * 报价方式 单价/总价
     */
    private String pricingMethod;

    /**
     * 评标方法 综合评标
     */
    private String tenderEvaluationMethod;

    /**
     * 是否进场/现场报名 01 是 02 否
     */
    private String siteRegistration;

    private String remark;

    private String templateCode;

    public String generateCode() {
        return String.join("",
                this.category,
                StringUtils.defaultIfBlank(projectType, "00"),
                StringUtils.defaultIfBlank(projectCategory, "00000000"),
                StringUtils.defaultIfBlank(tenderMethod, "00"),
                StringUtils.defaultIfBlank(qualificationExamination, "00"),
                StringUtils.defaultIfBlank(docType,"00"),
                StringUtils.defaultIfBlank(contractType, "00"),
                StringUtils.defaultIfBlank(pricingMethod, "00"),
                StringUtils.defaultIfBlank(tenderEvaluationMethod, "00"),
                "" + System.nanoTime()
        );
    }
}
